package com.ruoyi.custom.mapper;

import com.ruoyi.custom.domain.Coupon;
import com.ruoyi.custom.domain.UserCoupon;
import org.apache.ibatis.annotations.*;

import java.util.Date;
import java.util.List;

@Mapper
public interface CouponMapper<Coupon> {
    /**
     * 扣减库存（乐观锁实现）
     * @param couponId 券ID
     * @param count 扣减数量
     * @return 影响行数（0表示扣减失败）
     */
    @Update("UPDATE ry_market_coupon " +
            "SET remain_count = remain_count - #{count}, update_time = NOW() " +
            "WHERE coupon_id = #{couponId} AND remain_count >= #{count}")
    int decreaseRemainCount(@Param("couponId") Long couponId, @Param("count") Integer count);

    /**
     * 批量查询可领取的优惠券
     */
    List<Coupon> selectAvailableCoupons(@Param("userId") Long userId);
}
